#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdlib.h>

int main()
{
    pid_t id1 = fork(); // 创建第一个子进程
    if (id1 == 0)  // 子进程
    {
        pid_t id2 = fork(); // 创建孙子进程
        if (id2 == 0)  // 孙子进程
        {
            printf("我是孙子进程，PID：%d   PPID:%d\n", getpid(), getppid());
            exit(1);  // 孙子进程退出
        }

        wait(0);  // 子进程等待孙子进程结束
        printf("我是子进程，PID：%d   PPID:%d\n", getpid(), getppid());
        exit(1);  // 子进程退出
    }

    wait(0);  // 父进程等待子进程结束
    printf("我是父进程,PID: %d   PPID:%d\n", getpid(), getppid());

    return 0;
}

